<?php

namespace sffi\WechatRobotPlug\api;

interface GroupApiInterface
{
    /**
     * 获取群组列表
     * @param string $robotWxid 机器人微信ID
     * @param bool $fresh 是否强制刷新数据
     */
    public function getGroups(bool $fresh): array;

    /**
     * 获取群成员列表
     * @param string $robotWxid 机器人微信ID
     * @param string $groupWxid 群聊微信ID
     * @param bool $fresh
     */
    public function getGroupMembers(string $groupWxid, bool $fresh): array;

    /**
     * 获取群成员详情
     * @param string $robotWxid 机器人微信ID
     * @param string $groupWxid 群聊微信ID
     * @param string $memberWxid 微信用户ID
     */
    public function getGroupMemberDetail(string $groupWxid, string $memberWxid): array;

    /**
     * 新建群聊
     * @param string $robotWxid
     * @param array $friends 好友ID
     */
    public function newGroup(array $friends): array;

    /**
     * 退出群聊
     * @param string $robotWxid
     * @param string $groupWxid 群聊微信ID
     */
    public function quitGroup(string $groupWxid): array;

    /**
     * 邀请进群
     * @param string $robotWxid
     * @param string $groupWxid 群聊ID
     * @param string $memberWxid 被邀请人
     */
    public function inviteInGroup(string $groupWxid, string $memberWxid): array;

    /**
     * 通过链接邀请进群
     * @param string $robotWxid
     * @param string $groupWxid 群聊ID
     * @param string $memberWxid 被邀请人
     */
    public function inviteInGroupByLink(string $groupWxid, string $memberWxid): array;

    /**
     * 通过链接邀请进群
     * @param string $robotWxid
     * @param string $groupWxid 群聊ID
     * @param string $name 昵称
     */
    public function setRobotNicknameInGroup(string $groupWxid, string $name): array;

    /**
     * 添加群成员为好友
     * @param string $robotWxid
     * @param string $groupWxid
     * @param string $memberWxid
     * @param string $msg 打招呼内容
     */
    public function addFriendInGroup(string $groupWxid, string $memberWxid, string $msg = ''): array;

    /**
     * 获取公告列表
     * @param string $robotWxid
     */
    public function getNoticeList();

    /**
     * 同意进群
     * @param string $robotWxid
     * @param string $groupWxid
     * @param string $url 邀请链接
     */
    public function agreeInGroup(string $groupWxid, string $url): array;

    /**
     * 更改群昵称
     * @param string $robotWxid
     * @param string $groupWxid
     * @param string $name
     */
    public function modifyGroupName(string $groupWxid, string $name): array;
}